home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / FLASHCOM.DSK / MAZE INTEGER VERSION.int < prev    next >
Text File  |  2014-09-09  |  3KB  |  59 lines

  1. 4  POKE -16300,0:X0=Y0=COLR:INIT=-12288:CLEAR=-12274:PLOT=-11506:LINE=-11500
  2. 5 DIM QWE(2):QWE=1:QWE(0)=2:IF QWE=2 THEN 10
  3. 6 CALL -936:VTAB 15:PRINT "USES PROGRAMMER'S AID ROM":VTAB 17:PRINT "WILL NOT COMPILE WITHOUT MODIFICATIONS":END 
  4. 10 TEXT :CALL -936:VTAB 10:TAB 10:PRINT "MAZE GENERATOR 2.2":TAB 13:PRINT "BY BOBBY DEEN"
  5. 11 VTAB 15:PRINT "THIS PROGRAM WILL DRAW HI-RES MAZES.":PRINT "YOU MUST GIVE THE HORIZONTAL AND"
  6. 12 PRINT "VERTICAL (H AND V) SIZE OF THE MAZE.":PRINT :INPUT "MAZE SIZE (H,V) ",H,V:PRINT 
  7. 20 IF NOT (H>55 OR V>37) THEN 40
  8. 30 PRINT "<CTRL-G>LARGEST SIZE IS 55X37<CTRL-G>":FOR I=1 TO 1500:NEXT I:GOTO 10
  9. 40 IF NOT (H<2 OR V<2) THEN 55
  10. 50 PRINT "<CTRL-G>SMALLEST SIZE IS 2X2<CTRL-G>":FOR I=1 TO 1500:NEXT I:GOTO 10
  11. 55 COLR=0:CALL INIT: POKE 806,64:CALL CLEAR: POKE -16302,0: POKE -16299,0
  12. 60 DIM SX(1650),SY(1650),M((H+2)*(V+2)),UN(4)
  13. 65 FOR I=0 TO (H+2)*(V+2):M(I)=0:NEXT I
  14. 80 FOR I=0 TO H+1:M(I)=1:M(I+(V+1)*(H+2))=1:NEXT I:FOR I=0 TO V+1:M(I*(H+2))=1:M(H+1+I*(H+2))=1:NEXT I
  15. 100 COLR=127
  16. 101 FOR I=3 TO H*5+3 STEP 5
  17. 102 X0=I:Y0=3:CALL PLOT:X0=I:Y0=V*5+3:CALL LINE
  18. 103 NEXT I
  19. 110 FOR I=3 TO V*5+3 STEP 5
  20. 111 X0=3:Y0=I:CALL PLOT:X0=H*5+3:Y0=I:CALL LINE
  21. 112 NEXT I
  22. 120 I= RND (2)*(H-1)+1:J= RND (2)*(V-1)+1:SP=0:LS=0:LX=0:LY=0:GOSUB 1000
  23. 130 M(I+J*(H+2))=1
  24. 140 SX(0)=I:SY(0)=J
  25. 150 FOR Z=1 TO 4:UN(Z)=0:NEXT Z
  26. 160 Z=1:IF M(I+(J-1)*(H+2))#0 THEN 170:UN(Z)=1:Z=Z+1
  27. 170 IF M(I-1+J*(H+2))#0 THEN 180:UN(Z)=2:Z=Z+1
  28. 180 IF M(I+(J+1)*(H+2))#0 THEN 190:UN(Z)=3:Z=Z+1
  29. 190 IF M(I+1+J*(H+2))#0 THEN 200:UN(Z)=4:Z=Z+1
  30. 200 IF Z=1 THEN GOTO 240
  31. 220 R=UN( RND (Z-1)+1)
  32. 230 SP=SP+1:GOSUB 1500:GOSUB 1100:M(I+J*(H+2))=1:SX(SP)=I:SY(SP)=J:GOTO 160
  33. 240 SP=SP-1:IF SP>0 THEN 250:I=LX:J=LY:GOSUB 1000:END 
  34. 250 I=SX(SP):J=SY(SP)
  35. 260 IF SP<=LS THEN 270:LS=SP+1:LX=SX(LS):LY=SY(LS)
  36. 270 COLR=127:X0=I*5:Y0=J*5:CALL PLOT
  37. 280 FOR D=1 TO 25:NEXT D
  38. 290 COLR=0:X0=I*5:Y0=J*5:CALL PLOT
  39. 300 GOTO 160
  40. 310 END 
  41. 1000 COLR=127:X0=I*5-1:Y0=J*5-1:CALL PLOT:X0=I*5+2:Y0=J*5+2:CALL LINE
  42. 1005 X0=I*5-1:Y0=J*5+2:CALL PLOT:X0=I*5+2:Y0=J*5-1:CALL LINE
  43. 1010 RETURN 
  44. 1100 IF R#1 THEN 1110:J=J-1:R=3:RETURN 
  45. 1110 IF R#2 THEN 1120:I=I-1:R=4:RETURN 
  46. 1120 IF R#3 THEN 1130:J=J+1:R=1:RETURN 
  47. 1130 IF R#4 THEN 1140:I=I+1:R=2:RETURN 
  48. 1140 PRINT "WHOA!":END 
  49. 1500 COLR=0
  50. 1510 IF R#1 THEN 1520:X0=I*5-1:Y0=J*5-2:CALL PLOT:X0=I*5+2:Y0=J*5-2:CALL LINE
  51. 1511 RETURN 
  52. 1520 IF R#2 THEN 1530:X0=I*5-2:Y0=J*5-1:CALL PLOT:X0=I*5-2:Y0=J*5+2:CALL LINE
  53. 1521 RETURN 
  54. 1530 IF R#3 THEN 1540:X0=I*5-1:Y0=J*5+3:CALL PLOT:X0=I*5+2:Y0=J*5+3:CALL LINE
  55. 1531 RETURN 
  56. 1540 IF R#4 THEN 1550:X0=I*5+3:Y0=J*5-1:CALL PLOT:X0=I*5+3:Y0=J*5+2:CALL LINE
  57. 1541 RETURN 
  58. 1550 PRINT "<CTRL-G><CTRL-G>STOP":END 
  59.